home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / gcl-1.000 / gcl-1 / gcl-1.0 / h / cmpinclude.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-09  |  27.9 KB  |  1,356 lines

  1.  
  2.  
  3. #ifndef __GNUC__
  4. #define HAVE_ALLOCA
  5. #include <alloca.h>
  6. #endif
  7.  /* If can mprotect pages and so selective gc will work */
  8. #define SGC  
  9.  
  10. /* End for cmpinclude */
  11. /* Begin for cmpinclude */
  12. #ifndef __GNUC__
  13. #define HAVE_ALLOCA
  14. #include <alloca.h>
  15. #endif
  16.  /* If can mprotect pages and so selective gc will work */
  17. #define SGC  
  18.  
  19. /* End for cmpinclude */
  20. /* Begin for cmpinclude */
  21. #ifndef __GNUC__
  22. #define HAVE_ALLOCA
  23. #include <alloca.h>
  24. #endif
  25.  /* If can mprotect pages and so selective gc will work */
  26. #define SGC  
  27.  
  28. /* Begin for cmpinclude */
  29. #ifndef __GNUC__
  30. #define HAVE_ALLOCA
  31. #include <alloca.h>
  32. #endif
  33.  /* If can mprotect pages and so selective gc will work */
  34. #define SGC  
  35.  
  36. /* Begin for cmpinclude */
  37. #ifndef __GNUC__
  38. #define HAVE_ALLOCA
  39. #include <alloca.h>
  40. #endif
  41.  /* If can mprotect pages and so selective gc will work */
  42. #define SGC  
  43.  
  44. /* Begin for cmpinclude */
  45. #ifndef __GNUC__
  46. #define HAVE_ALLOCA
  47. #include <alloca.h>
  48. #endif
  49.  /* If can mprotect pages and so selective gc will work */
  50. #define SGC  
  51.  
  52.  
  53. /*
  54.  Copyright (C) 1994 M. Hagiya, W. Schelter, T. Yuasa
  55.  
  56. This file is part of GNU Common Lisp, herein referred to as GCL
  57.  
  58. GCL is free software; you can redistribute it and/or modify it under
  59. the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE as published by
  60. the Free Software Foundation; either version 2, or (at your option)
  61. any later version.
  62.  
  63. GCL is distributed in the hope that it will be useful, but WITHOUT
  64. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  65. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public 
  66. License for more details.
  67.  
  68. You should have received a copy of the GNU Library General Public License 
  69. along with GCL; see the file COPYING.  If not, write to the Free Software
  70. Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  71. */
  72. #include <stdio.h>
  73. #include <setjmp.h>
  74. #include <varargs.h>
  75. #define    TRUE    1
  76. #define    FALSE    0
  77. #ifdef SGC
  78. #define FIRSTWORD     short t; char s,m
  79. #define SGC_TOUCH(x) x->d.m=0
  80. #else
  81. #define FIRSTWORD     short t; short m
  82. #define SGC_TOUCH(x)
  83. #endif  
  84. #define STSET(type,x,i,val)  do{SGC_TOUCH(x);STREF(type,x,i) = (val);} while(0)
  85. #ifndef VOL
  86. #define VOL
  87. #endif
  88. #ifndef COM_LENG
  89. #define COM_LENG 
  90. #endif
  91. #ifndef CHAR_SIZE
  92. #define CHAR_SIZE        8     
  93. #endif
  94. typedef int bool;
  95. typedef int fixnum;
  96. typedef float shortfloat;
  97. typedef double longfloat;
  98. typedef  unsigned short fatchar;
  99. #define SIGNED_CHAR(x) (((char ) -1) < (char )0 ? (char) x \
  100.           : (x >= (1<<(CHAR_SIZE-1)) ? \
  101.              x - (((int)(1<<(CHAR_SIZE-1))) << 1) \
  102.              : (char ) x))
  103. typedef union lispunion *object;
  104. typedef union int_object iobject;
  105. union int_object {int i; object o;};
  106.  
  107. #define    OBJNULL    ((object)NULL)
  108. struct fixnum_struct {
  109.         FIRSTWORD;
  110.     fixnum    FIXVAL;
  111. };
  112. #define    fix(x)    (x)->FIX.FIXVAL
  113. #define    SMALL_FIXNUM_LIMIT    1024
  114. extern struct fixnum_struct small_fixnum_table[COM_LENG];
  115. #define    small_fixnum(i)    (object)(small_fixnum_table+SMALL_FIXNUM_LIMIT+(i))
  116.  
  117. struct bignum {
  118.             FIRSTWORD;
  119.     long             *big_self;    /*  bignum body  */
  120.     int        big_length;    /*  bignum length  */
  121. };
  122. #define MP(x) ((GEN)(x)->big.big_self)
  123. struct shortfloat_struct {
  124.             FIRSTWORD;
  125.     shortfloat    SFVAL;
  126. };
  127. #define    sf(x)    (x)->SF.SFVAL
  128. struct longfloat_struct {
  129.             FIRSTWORD;
  130.     longfloat    LFVAL;
  131. };
  132. #define    lf(x)    (x)->LF.LFVAL
  133. struct character {
  134.             FIRSTWORD;
  135.     unsigned short    ch_code;
  136.     unsigned char    ch_font;
  137.     unsigned char    ch_bits;
  138. };
  139. struct character character_table1[256+128];
  140. #define character_table (character_table1+128)
  141. #define    code_char(c)    (object)(character_table+(c))
  142. #define    char_code(x)    (x)->ch.ch_code
  143. #define    char_font(x)    (x)->ch.ch_font
  144. #define    char_bits(x)    (x)->ch.ch_bits
  145. enum stype {
  146.     stp_ordinary,
  147.     stp_constant,
  148.         stp_special
  149. };
  150. struct symbol {
  151.         FIRSTWORD;
  152.     object    s_dbind;
  153.     int    (*s_sfdef)();
  154. #define    s_fillp        st_fillp
  155. #define    s_self        st_self
  156.     int    s_fillp;
  157.     char    *s_self;
  158.     object    s_gfdef;
  159.     object    s_plist;
  160.     object    s_hpack;
  161.     short    s_stype;
  162.     short    s_mflag;
  163. };
  164. struct cons {
  165.         FIRSTWORD;
  166.     object    c_cdr;
  167.     object    c_car;
  168. };
  169. struct array {
  170.         FIRSTWORD;
  171.     short    a_rank;
  172.     short    a_adjustable;
  173.     int    a_dim;
  174.     int    *a_dims;
  175.     object    *a_self;
  176.     object    a_displaced;
  177.     short    a_elttype;
  178.     short    a_offset;
  179. };
  180.  
  181.  
  182.  
  183. struct fat_string {            /*  vector header  */
  184.         FIRSTWORD;
  185.         unsigned fs_raw : 24;     /* tells if the things in leader are raw */
  186.     unsigned char fs_leader_length;     /* leader_Length  */
  187.     int    fs_dim;        /*  dimension  */
  188.     int    fs_fillp;    /*  fill pointer  */
  189.                 /*  For simple vectors,  */
  190.                 /*  fs_fillp is equal to fs_dim.  */
  191.     fatchar     *fs_self;    /*  pointer to the vector Note the leader starts at (int *) *fs_self - fs_leader_length */
  192. };
  193.  
  194.  
  195. struct vector {
  196.         FIRSTWORD;
  197.     short    v_hasfillp;
  198.     short    v_adjustable;
  199.     int    v_dim;
  200.     int    v_fillp;
  201.     object    *v_self;
  202.     object    v_displaced;
  203.     short    v_elttype;
  204.     short    v_offset;
  205. };
  206. struct string {
  207.         FIRSTWORD;
  208.     short    st_hasfillp;
  209.     short    st_adjustable;
  210.     int    st_dim;
  211.     int    st_fillp;
  212.     char    *st_self;
  213.     object    st_displaced;
  214. };
  215. struct ustring {
  216.         FIRSTWORD;
  217.     short    ust_hasfillp;
  218.     short    ust_adjustable;
  219.     int    ust_dim;
  220.     int    ust_fillp;
  221.     unsigned char
  222.         *ust_self;
  223.     object    ust_displaced;
  224. };
  225. #define USHORT(x,i) (((unsigned short *)(x)->ust.ust_self)[i])
  226.  
  227. struct bitvector {
  228.         FIRSTWORD;
  229.     short    bv_hasfillp;
  230.     short    bv_adjustable;
  231.     int    bv_dim;
  232.     int    bv_fillp;
  233.     char    *bv_self;
  234.     object    bv_displaced;
  235.     short    bv_elttype;
  236.     short    bv_offset;
  237. };
  238. struct fixarray {
  239.         FIRSTWORD;
  240.     short    fixa_rank;
  241.     short    fixa_adjustable;
  242.     int    fixa_dim;
  243.     int    *fixa_dims;
  244.     fixnum    *fixa_self;
  245.     object    fixa_displaced;
  246.     short    fixa_elttype;
  247.     short    fixa_offset;
  248. };
  249. struct sfarray {
  250.         FIRSTWORD;
  251.     short    sfa_rank;
  252.     short    sfa_adjustable;
  253.     int    sfa_dim;
  254.     int    *sfa_dims;
  255.     shortfloat
  256.         *sfa_self;
  257.     object    sfa_displaced;
  258.     short    sfa_elttype;
  259.     short    sfa_offset;
  260. };
  261. struct lfarray {
  262.         FIRSTWORD;
  263.     short    lfa_rank;
  264.     short    lfa_adjustable;
  265.     int    lfa_dim;
  266.     int    *lfa_dims;
  267.     longfloat
  268.         *lfa_self;
  269.     object    lfa_displaced;
  270.     short    lfa_elttype;
  271.     short    lfa_offset;
  272. };
  273.  
  274. struct structure {        /*  structure header  */
  275.         FIRSTWORD;
  276.     object    str_def;    /*  structure definition (a structure)  */
  277.     object    *str_self;    /*  structure self  */
  278. };
  279.  
  280. #define STREF(type,x,i) (*((type *)(((char *)((x)->str.str_self))+(i))))
  281.  
  282. struct cfun {
  283.         FIRSTWORD;
  284.     object    cf_name;
  285.     int    (*cf_self)();
  286.     object    cf_data;
  287. };
  288.  
  289.   struct dclosure {        /*  compiled closure header  */
  290.         FIRSTWORD;
  291.     int    (*dc_self)();    /*  entry address  */
  292.     object    *dc_env;    /*  environment  */
  293. };
  294.  
  295.   struct cclosure {
  296.         FIRSTWORD;
  297.  
  298.     object    cc_name;
  299.     int    (*cc_self)();
  300.     object    cc_env;
  301.     object    cc_data;
  302.     object    *cc_turbo;
  303. };
  304.  
  305. struct sfun {
  306.     FIRSTWORD;
  307.     object    sfn_name;
  308.     int    (*sfn_self)();
  309.     object    sfn_data;
  310.     int sfn_argd;
  311.  
  312.           };
  313. struct vfun {
  314.         FIRSTWORD; 
  315.     object    vfn_name;
  316.     int    (*vfn_self)();
  317.     object    vfn_data;
  318.     unsigned short vfn_minargs;
  319.     unsigned short vfn_maxargs;
  320.           };
  321.  
  322. struct dummy {
  323.         FIRSTWORD;
  324. };
  325. struct stream {
  326.         FIRSTWORD;
  327.     FILE    *sm_fp;        /*  file pointer  */
  328.     object    sm_object0;    /*  some object  */
  329.     object    sm_object1;    /*  some object */
  330.     int    sm_int0;    /*  some int  */
  331.     int    sm_int1;    /*  some int  */
  332.     char      *sm_buffer;     /*  ptr to BUFSIZE block of storage */
  333.     short    sm_mode;    /*  stream mode  */
  334.                 /*  of enum smmode  */
  335. };
  336. union lispunion {
  337.     struct fixnum_struct
  338.             FIX;
  339.     struct shortfloat_struct
  340.             SF;
  341.     struct stream sm;
  342.     struct longfloat_struct
  343.             LF;
  344.     struct character
  345.             ch;
  346.     struct symbol    s;
  347.     struct cons    c;
  348.     struct array    a;
  349.     struct vector    v;
  350.     struct string    st;
  351.     struct ustring    ust;
  352.     struct bignum   big;
  353.     struct bitvector
  354.             bv;
  355.     struct structure
  356.             str;
  357.     struct cfun    cf;
  358.     struct cclosure    cc;
  359.     struct sfun     sfn;
  360.     struct vfun     vfn;
  361.     struct dummy    d;
  362.         struct fat_string fs;
  363.         struct dclosure dc;
  364.     struct fixarray    fixa;
  365.     struct sfarray    sfa;
  366.     struct lfarray    lfa;
  367. };
  368. enum type {
  369.     t_cons,
  370.     t_start = 0 , /* t_cons, */
  371.     t_fixnum,
  372.     t_bignum,
  373.     t_ratio,
  374.     t_shortfloat,
  375.     t_longfloat,
  376.     t_complex,
  377.     t_character,
  378.     t_symbol,
  379.     t_package,
  380.     t_hashtable,
  381.     t_array,
  382.     t_vector,
  383.     t_string,
  384.     t_bitvector,
  385.     t_structure,
  386.     t_stream,
  387.     t_random,
  388.     t_readtable,
  389.     t_pathname,
  390.     t_cfun,
  391.     t_cclosure,
  392.     t_sfun,
  393.         t_gfun,
  394.     t_vfun,
  395.     t_cfdata,
  396.     t_spice,
  397.     t_fat_string,
  398.         t_dclosure,
  399.     t_end,
  400.     t_contiguous,
  401.     t_relocatable,
  402.     t_other
  403. };
  404. #define    type_of(obje)    ((enum type)(((object)(obje))->d.t))
  405. #define    endp(obje)    endp1(obje)
  406. extern object value_stack[COM_LENG];
  407. #define    vs_org        value_stack
  408. object *vs_limit;
  409. object *vs_base;
  410. object *vs_top;
  411. #define    vs_push(obje)    (*vs_top++ = (obje))
  412. #define    vs_pop        (*--vs_top)
  413. #define    vs_head        vs_top[-1]
  414. #define    vs_mark        object *old_vs_top = vs_top
  415. #define    vs_reset    vs_top = old_vs_top
  416. #define    vs_check    if (vs_top >= vs_limit)  \
  417.                 vs_overflow();
  418. #define    vs_check_push(obje)  \
  419.             (vs_top >= vs_limit ?  \
  420.              (object)vs_overflow() : (*vs_top++ = (obje)))
  421. #define    check_arg(n)  \
  422.             if (vs_top - vs_base != (n))  \
  423.                 check_arg_failed(n)
  424. #define    MMcheck_arg(n)  \
  425.             if (vs_top - vs_base < (n))  \
  426.                 too_few_arguments();  \
  427.             else if (vs_top - vs_base > (n))  \
  428.                 too_many_arguments()
  429. #define vs_reserve(x)    if(vs_base+(x) >= vs_limit)  \
  430.                 vs_overflow();
  431. struct bds_bd {
  432.     object    bds_sym;
  433.     object    bds_val;
  434. };
  435. extern struct bds_bd bind_stack[COM_LENG];
  436. typedef struct bds_bd *bds_ptr;
  437. bds_ptr bds_org;
  438. bds_ptr bds_limit;
  439. bds_ptr bds_top;
  440. #define    bds_check  \
  441.     if (bds_top >= bds_limit)  \
  442.         bds_overflow()
  443. #define    bds_bind(sym, val)  \
  444.     ((++bds_top)->bds_sym = (sym),  \
  445.     bds_top->bds_val = (sym)->s.s_dbind,  \
  446.     (sym)->s.s_dbind = (val))
  447. #define    bds_unwind1  \
  448.     ((bds_top->bds_sym)->s.s_dbind = bds_top->bds_val, --bds_top)
  449. typedef struct invocation_history {
  450.     object    ihs_function;
  451.     object    *ihs_base;
  452. } *ihs_ptr;
  453. extern struct invocation_history ihs_stack[COM_LENG];
  454. ihs_ptr ihs_org;
  455. ihs_ptr ihs_limit;
  456. ihs_ptr ihs_top;
  457. #define    ihs_check  \
  458.     if (ihs_top >= ihs_limit)  \
  459.         ihs_overflow()
  460. #define ihs_push(function)  \
  461.     (++ihs_top)->ihs_function = (function);  \
  462.     ihs_top->ihs_base = vs_base
  463. #define ihs_pop()     (ihs_top--)
  464. enum fr_class {
  465.     FRS_CATCH,
  466.     FRS_CATCHALL,
  467.     FRS_PROTECT
  468. };
  469. struct frame {
  470.     jmp_buf        frs_jmpbuf;
  471.     object        *frs_lex;
  472.     bds_ptr        frs_bds_top;
  473.     enum fr_class    frs_class;
  474.     object        frs_val;
  475.     ihs_ptr        frs_ihs;
  476. };
  477. typedef struct frame *frame_ptr;
  478. #define    alloc_frame_id()    alloc_object(t_spice)
  479. extern struct frame frame_stack[COM_LENG];
  480.  
  481. frame_ptr frs_org;
  482. frame_ptr frs_limit;
  483. frame_ptr frs_top;
  484. #define frs_push(class, val)  \
  485.     if (++frs_top >= frs_limit)  \
  486.         frs_overflow();  \
  487.     frs_top->frs_lex = lex_env;\
  488.     frs_top->frs_bds_top = bds_top;  \
  489.     frs_top->frs_class = (class);  \
  490.     frs_top->frs_val = (val);  \
  491.     frs_top->frs_ihs = ihs_top;  \
  492.         setjmp(frs_top->frs_jmpbuf)
  493. #define frs_pop()    frs_top--
  494. bool nlj_active;
  495. frame_ptr nlj_fr;
  496. object nlj_tag;
  497. object *lex_env;
  498. object caar();
  499. object cadr();
  500. object cdar();
  501. object cddr();
  502. object caaar();
  503. object caadr();
  504. object cadar();
  505. object caddr();
  506. object cdaar();
  507. object cdadr();
  508. object cddar();
  509. object cdddr();
  510. object caaaar();
  511. object caaadr();
  512. object caadar();
  513. object caaddr();
  514. object cadaar();
  515. object cadadr();
  516. object caddar();
  517. object cadddr();
  518. object cdaaar();
  519. object cdaadr();
  520. object cdadar();
  521. object cdaddr();
  522. object cddaar();
  523. object cddadr();
  524. object cdddar();
  525. object cddddr();
  526. #define MMcons(a,d)    make_cons((a),(d))
  527. #define MMcar(x)    (x)->c.c_car
  528. #define MMcdr(x)    (x)->c.c_cdr
  529. #define CMPcar(x)    (x)->c.c_car
  530. #define CMPcdr(x)    (x)->c.c_cdr
  531. #define CMPcaar(x)    (x)->c.c_car->c.c_car
  532. #define CMPcadr(x)    (x)->c.c_cdr->c.c_car
  533. #define CMPcdar(x)    (x)->c.c_car->c.c_cdr
  534. #define CMPcddr(x)    (x)->c.c_cdr->c.c_cdr
  535. #define CMPcaaar(x)    (x)->c.c_car->c.c_car->c.c_car
  536. #define CMPcaadr(x)    (x)->c.c_cdr->c.c_car->c.c_car
  537. #define CMPcadar(x)    (x)->c.c_car->c.c_cdr->c.c_car
  538. #define CMPcaddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_car
  539. #define CMPcdaar(x)    (x)->c.c_car->c.c_car->c.c_cdr
  540. #define CMPcdadr(x)    (x)->c.c_cdr->c.c_car->c.c_cdr
  541. #define CMPcddar(x)    (x)->c.c_car->c.c_cdr->c.c_cdr
  542. #define CMPcdddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_cdr
  543. #define CMPcaaaar(x)    (x)->c.c_car->c.c_car->c.c_car->c.c_car
  544. #define CMPcaaadr(x)    (x)->c.c_cdr->c.c_car->c.c_car->c.c_car
  545. #define CMPcaadar(x)    (x)->c.c_car->c.c_cdr->c.c_car->c.c_car
  546. #define CMPcaaddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_car
  547. #define CMPcadaar(x)    (x)->c.c_car->c.c_car->c.c_cdr->c.c_car
  548. #define CMPcadadr(x)    (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_car
  549. #define CMPcaddar(x)    (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_car
  550. #define CMPcadddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_car
  551. #define CMPcdaaar(x)    (x)->c.c_car->c.c_car->c.c_car->c.c_cdr
  552. #define CMPcdaadr(x)    (x)->c.c_cdr->c.c_car->c.c_car->c.c_cdr
  553. #define CMPcdadar(x)    (x)->c.c_car->c.c_cdr->c.c_car->c.c_cdr
  554. #define CMPcdaddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_cdr
  555. #define CMPcddaar(x)    (x)->c.c_car->c.c_car->c.c_cdr->c.c_cdr
  556. #define CMPcddadr(x)    (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_cdr
  557. #define CMPcdddar(x)    (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_cdr
  558. #define CMPcddddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_cdr
  559. #define CMPfuncall    funcall
  560. #define    cclosure_call    funcall
  561. object simple_lispcall();
  562. object simple_lispcall_no_event();
  563. object simple_symlispcall();
  564. object simple_symlispcall_no_event();
  565. object CMPtemp;
  566. object CMPtemp1;
  567. object CMPtemp2;
  568. object CMPtemp3;
  569. #define    Cnil    ((object)&Cnil_body)
  570. #define    Ct    ((object)&Ct_body)
  571. struct symbol Cnil_body, Ct_body;
  572. object MF();
  573. object MFnew();
  574. object MM();
  575. object Scons;
  576. object siSfunction_documentation;
  577. object siSvariable_documentation;
  578. object siSpretty_print_format;
  579. object Slist;
  580. object keyword_package;
  581. object alloc_object();
  582. object car();
  583. object cdr();
  584. object list();
  585. object listA();
  586. object coerce_to_string();
  587. object elt();
  588. object elt_set();
  589. frame_ptr frs_sch();
  590. frame_ptr frs_sch_catch();
  591. object make_cclosure();
  592. object make_cclosure_new();
  593. object nth();
  594. object nthcdr();
  595. object make_cons();
  596. object append();
  597. object nconc();
  598. object reverse();
  599. object nreverse();
  600. object number_expt();
  601. object number_minus();
  602. object number_negate();
  603. object number_plus();
  604. object number_times();
  605. object one_minus();
  606. object one_plus();
  607. object get();
  608. object getf();
  609. object putprop();
  610. object sputprop();
  611. object remprop();
  612. object string_to_object();
  613. object symbol_function();
  614. object symbol_value();
  615. object make_fixnum();
  616. object make_shortfloat();
  617. object make_longfloat();
  618. object structure_ref();
  619. object structure_set();
  620. object princ();
  621. object prin1();
  622. object print();
  623. object terpri();
  624. object aref();
  625. object aset();
  626. object aref1();
  627. object aset1();
  628. void call_or_link();
  629. void call_or_link_closure();
  630. object call_proc();
  631. object call_proc0();
  632. object call_proc1();
  633. object call_proc2();
  634. object ifuncall();   
  635. object ifuncall1();
  636. object ifuncall2();
  637. object symbol_name();
  638. #define T101 Z101
  639. #define T102 Z102
  640. #define T103 Z103
  641. #define T104 Z104
  642. #define T105 Z105
  643. #define T106 Z106
  644. #define T107 Z107
  645. #define T108 Z108
  646. #define T109 Z109
  647. #define T110 Z110
  648. #define T111 Z111
  649. #define T112 Z112
  650. #define T113 Z113
  651. #define T114 Z114
  652. #define T115 Z115
  653. #define T116 Z116
  654. #define T117 Z117
  655. #define T118 Z118
  656. #define T119 Z119
  657. #define T120 Z120
  658. #define T121 Z121
  659. #define T122 Z122
  660. #define T123 Z123
  661. #define T124 Z124
  662. #define T125 Z125
  663. #define T126 Z126
  664. #define T127 Z127
  665. #define T128 Z128
  666. #define T129 Z129
  667. #define T130 Z130
  668. #define T131 Z131
  669. #define T132 Z132
  670. #define T133 Z133
  671. #define T134 Z134
  672. #define T135 Z135
  673. #define T136 Z136
  674. #define T137 Z137
  675. #define T138 Z138
  676. #define T139 Z139
  677. #define T140 Z140
  678. #define T141 Z141
  679. #define T142 Z142
  680. #define T143 Z143
  681. #define T144 Z144
  682. #define T145 Z145
  683. #define T146 Z146
  684. #define T147 Z147
  685. #define T148 Z148
  686. #define T149 Z149
  687. #define T150 Z150
  688. #define T151 Z151
  689. #define T152 Z152
  690. #define T153 Z153
  691. #define T154 Z154
  692. #define T155 Z155
  693. #define T156 Z156
  694. #define T157 Z157
  695. #define T158 Z158
  696. #define T159 Z159
  697. #define T160 Z160
  698. #define T161 Z161
  699. #define T162 Z162
  700. #define T163 Z163
  701. #define T164 Z164
  702. #define T165 Z165
  703. #define T166 Z166
  704. #define T167 Z167
  705. #define T168 Z168
  706. #define T169 Z169
  707. #define T170 Z170
  708. #define T171 Z171
  709. #define T172 Z172
  710. #define T173 Z173
  711. #define T174 Z174
  712. #define T175 Z175
  713. #define T176 Z176
  714. #define T177 Z177
  715. #define T178 Z178
  716. #define T179 Z179
  717. #define T180 Z180
  718. #define T181 Z181
  719. #define T182 Z182
  720. #define T183 Z183
  721. #define T184 Z184
  722. #define T185 Z185
  723. #define T186 Z186
  724. #define T187 Z187
  725. #define T188 Z188
  726. #define T189 Z189
  727. #define T190 Z190
  728. #define T191 Z191
  729. #define T192 Z192
  730. #define T193 Z193
  731. #define T194 Z194
  732. #define T195 Z195
  733. #define T196 Z196
  734. #define T197 Z197
  735. #define T198 Z198
  736. #define T199 Z199
  737. #define T200 Z200
  738. #define T201 Z201
  739. #define T202 Z202
  740. #define T203 Z203
  741. #define T204 Z204
  742. #define T205 Z205
  743. #define T206 Z206
  744. #define T207 Z207
  745. #define T208 Z208
  746. #define T209 Z209
  747. #define T210 Z210
  748. #define T211 Z211
  749. #define T212 Z212
  750. #define T213 Z213
  751. #define T214 Z214
  752. #define T215 Z215
  753. #define T216 Z216
  754. #define T217 Z217
  755. #define T218 Z218
  756. #define T219 Z219
  757. #define T220 Z220
  758. #define T221 Z221
  759. #define T222 Z222
  760. #define T223 Z223
  761. #define T224 Z224
  762. #define T225 Z225
  763. #define T226 Z226
  764. #define T227 Z227
  765. #define T228 Z228
  766. #define T229 Z229
  767. #define T230 Z230
  768. #define T231 Z231
  769. #define T232 Z232
  770. #define T233 Z233
  771. #define T234 Z234
  772. #define T235 Z235
  773. #define T236 Z236
  774. #define T237 Z237
  775. #define T238 Z238
  776. #define T239 Z239
  777. #define T240 Z240
  778. #define T241 Z241
  779. #define T242 Z242
  780. #define T243 Z243
  781. #define T244 Z244
  782. #define T245 Z245
  783. #define T246 Z246
  784. #define T247 Z247
  785. #define T248 Z248
  786. #define T249 Z249
  787. #define T250 Z250
  788. #define T251 Z251
  789. #define T252 Z252
  790. #define T253 Z253
  791. #define T254 Z254
  792. #define T255 Z255
  793. #define T256 Z256
  794. #define T257 Z257
  795. #define T258 Z258
  796. #define T259 Z259
  797. #define T260 Z260
  798. #define T261 Z261
  799. #define T262 Z262
  800. #define T263 Z263
  801. #define T264 Z264
  802. #define T265 Z265
  803. #define T266 Z266
  804. #define T267 Z267
  805. #define T268 Z268
  806. #define T269 Z269
  807. #define T270 Z270
  808. #define T271 Z271
  809. #define T272 Z272
  810. #define T273 Z273
  811. #define T274 Z274
  812. #define T275 Z275
  813. #define T276 Z276
  814. #define T277 Z277
  815. #define T278 Z278
  816. #define T279 Z279
  817. #define T280 Z280
  818. #define T281 Z281
  819. #define T282 Z282
  820. #define T283 Z283
  821. #define T284 Z284
  822. #define T285 Z285
  823. #define T286 Z286
  824. #define T287 Z287
  825. #define T288 Z288
  826. #define T289 Z289
  827. #define T290 Z290
  828. #define T291 Z291
  829. #define T292 Z292
  830. #define T293 Z293
  831. #define T294 Z294
  832. #define T295 Z295
  833. #define T296 Z296
  834. #define T297 Z297
  835. #define T298 Z298
  836. #define T299 Z299
  837. #define T300 Z300
  838. #define T301 Z301
  839. #define T302 Z302
  840. #define T303 Z303
  841. #define T304 Z304
  842. #define T305 Z305
  843. #define T306 Z306
  844. #define T307 Z307
  845. #define T308 Z308
  846. #define T309 Z309
  847. #define T310 Z310
  848. #define T311 Z311
  849. #define T312 Z312
  850. #define T313 Z313
  851. #define T314 Z314
  852. #define T315 Z315
  853. #define T316 Z316
  854. #define T317 Z317
  855. #define T318 Z318
  856. #define T319 Z319
  857. #define T320 Z320
  858. #define T321 Z321
  859. #define T322 Z322
  860. #define T323 Z323
  861. #define T324 Z324
  862. #define T325 Z325
  863. #define T326 Z326
  864. #define T327 Z327
  865. #define T328 Z328
  866. #define T329 Z329
  867. #define T330 Z330
  868. #define T331 Z331
  869. #define T332 Z332
  870. #define T333 Z333
  871. #define T334 Z334
  872. #define T335 Z335
  873. #define T336 Z336
  874. #define T337 Z337
  875. #define T338 Z338
  876. #define T339 Z339
  877. #define T340 Z340
  878. #define T341 Z341
  879. #define T342 Z342
  880. #define T343 Z343
  881. #define T344 Z344
  882. #define T345 Z345
  883. #define T346 Z346
  884. #define T347 Z347
  885. #define T348 Z348
  886. #define T349 Z349
  887. #define T350 Z350
  888. #define T351 Z351
  889. #define T352 Z352
  890. #define T353 Z353
  891. #define T354 Z354
  892. #define T355 Z355
  893. #define T356 Z356
  894. #define T357 Z357
  895. #define T358 Z358
  896. #define T359 Z359
  897. #define T360 Z360
  898. #define T361 Z361
  899. #define T362 Z362
  900. #define T363 Z363
  901. #define T364 Z364
  902. #define T365 Z365
  903. #define T366 Z366
  904. #define T367 Z367
  905. #define T368 Z368
  906. #define T369 Z369
  907. #define T370 Z370
  908. #define T371 Z371
  909. #define T372 Z372
  910. #define T373 Z373
  911. #define T374 Z374
  912. #define T375 Z375
  913. #define T376 Z376
  914. #define T377 Z377
  915. #define T378 Z378
  916. #define T379 Z379
  917. #define T380 Z380
  918. #define T381 Z381
  919. #define T382 Z382
  920. #define T383 Z383
  921. #define T384 Z384
  922. #define T385 Z385
  923. #define T386 Z386
  924. #define T387 Z387
  925. #define T388 Z388
  926. #define T389 Z389
  927. #define T390 Z390
  928. #define T391 Z391
  929. #define T392 Z392
  930. #define T393 Z393
  931. #define T394 Z394
  932. #define T395 Z395
  933. #define T396 Z396
  934. #define T397 Z397
  935. #define T398 Z398
  936. #define T399 Z399
  937. #define T400 Z400
  938. #define T401 Z401
  939. #define T402 Z402
  940. #define T403 Z403
  941. #define T404 Z404
  942. #define T405 Z405
  943. #define T406 Z406
  944. #define T407 Z407
  945. #define T408 Z408
  946. #define T409 Z409
  947. #define T410 Z410
  948. #define T411 Z411
  949. #define T412 Z412
  950. #define T413 Z413
  951. #define T414 Z414
  952. #define T415 Z415
  953. #define T416 Z416
  954. #define T417 Z417
  955. #define T418 Z418
  956. #define T419 Z419
  957. #define T420 Z420
  958. #define T421 Z421
  959. #define T422 Z422
  960. #define T423 Z423
  961. #define T424 Z424
  962. #define T425 Z425
  963. #define T426 Z426
  964. #define T427 Z427
  965. #define T428 Z428
  966. #define T429 Z429
  967. #define T430 Z430
  968. #define T431 Z431
  969. #define T432 Z432
  970. #define T433 Z433
  971. #define T434 Z434
  972. #define T435 Z435
  973. #define T436 Z436
  974. #define T437 Z437
  975. #define T438 Z438
  976. #define T439 Z439
  977. #define T440 Z440
  978. #define T441 Z441
  979. #define T442 Z442
  980. #define T443 Z443
  981. #define T444 Z444
  982. #define T445 Z445
  983. #define T446 Z446
  984. #define T447 Z447
  985. #define T448 Z448
  986. #define T449 Z449
  987. #define T450 Z450
  988. #define T451 Z451
  989. #define T452 Z452
  990. #define T453 Z453
  991. #define T454 Z454
  992. #define T455 Z455
  993. #define T456 Z456
  994. #define T457 Z457
  995. #define T458 Z458
  996. #define T459 Z459
  997. #define T460 Z460
  998. #define T461 Z461
  999. #define T462 Z462
  1000. #define T463 Z463
  1001. #define T464 Z464
  1002. #define T465 Z465
  1003. #define T466 Z466
  1004. #define T467 Z467
  1005. #define T468 Z468
  1006. #define T469 Z469
  1007. #define T470 Z470
  1008. #define T471 Z471
  1009. #define T472 Z472
  1010. #define T473 Z473
  1011. #define T474 Z474
  1012. #define T475 Z475
  1013. #define T476 Z476
  1014. #define T477 Z477
  1015. #define T478 Z478
  1016. #define T479 Z479
  1017. #define T480 Z480
  1018. #define T481 Z481
  1019. #define T482 Z482
  1020. #define T483 Z483
  1021. #define T484 Z484
  1022. #define T485 Z485
  1023. #define T486 Z486
  1024. #define T487 Z487
  1025. #define T488 Z488
  1026. #define T489 Z489
  1027. #define T490 Z490
  1028. #define T491 Z491
  1029. #define T492 Z492
  1030. #define T493 Z493
  1031. #define T494 Z494
  1032. #define T495 Z495
  1033. #define T496 Z496
  1034. #define T497 Z497
  1035. #define T498 Z498
  1036. #define T499 Z499
  1037. #define T500 Z500
  1038. #define T501 Z501
  1039. #define T502 Z502
  1040. #define T503 Z503
  1041. #define T504 Z504
  1042. #define T505 Z505
  1043. #define T506 Z506
  1044. #define T507 Z507
  1045. #define T508 Z508
  1046. #define T509 Z509
  1047. #define T510 Z510
  1048. #define T511 Z511
  1049. #define T512 Z512
  1050. #define T513 Z513
  1051. #define T514 Z514
  1052. #define T515 Z515
  1053. #define T516 Z516
  1054. #define T517 Z517
  1055. #define T518 Z518
  1056. #define T519 Z519
  1057. #define T520 Z520
  1058. #define T521 Z521
  1059. #define T522 Z522
  1060. #define T523 Z523
  1061. #define T524 Z524
  1062. #define T525 Z525
  1063. #define T526 Z526
  1064. #define T527 Z527
  1065. #define T528 Z528
  1066. #define T529 Z529
  1067. #define T530 Z530
  1068. #define T531 Z531
  1069. #define T532 Z532
  1070. #define T533 Z533
  1071. #define T534 Z534
  1072. #define T535 Z535
  1073. #define T536 Z536
  1074. #define T537 Z537
  1075. #define T538 Z538
  1076. #define T539 Z539
  1077. #define T540 Z540
  1078. #define T541 Z541
  1079. #define T542 Z542
  1080. #define T543 Z543
  1081. #define T544 Z544
  1082. #define T545 Z545
  1083. #define T546 Z546
  1084. #define T547 Z547
  1085. #define T548 Z548
  1086. #define T549 Z549
  1087. #define T550 Z550
  1088. #define T551 Z551
  1089. #define T552 Z552
  1090. #define T553 Z553
  1091. #define T554 Z554
  1092. #define T555 Z555
  1093. #define T556 Z556
  1094. #define T557 Z557
  1095. #define T558 Z558
  1096. #define T559 Z559
  1097. #define T560 Z560
  1098. #define T561 Z561
  1099. #define T562 Z562
  1100. #define T563 Z563
  1101. #define T564 Z564
  1102. #define T565 Z565
  1103. #define T566 Z566
  1104. #define T567 Z567
  1105. #define T568 Z568
  1106. #define T569 Z569
  1107. #define T570 Z570
  1108. #define T571 Z571
  1109. #define T572 Z572
  1110. #define T573 Z573
  1111. #define T574 Z574
  1112. #define T575 Z575
  1113. #define T576 Z576
  1114. #define T577 Z577
  1115. #define T578 Z578
  1116. #define T579 Z579
  1117. #define T580 Z580
  1118. #define T581 Z581
  1119. #define T582 Z582
  1120. #define T583 Z583
  1121. #define T584 Z584
  1122. #define T585 Z585
  1123. #define T586 Z586
  1124. #define T587 Z587
  1125. #define T588 Z588
  1126. #define T589 Z589
  1127. #define T590 Z590
  1128. #define T591 Z591
  1129. #define T592 Z592
  1130. #define T593 Z593
  1131. #define T594 Z594
  1132. #define T595 Z595
  1133. #define T596 Z596
  1134. #define T597 Z597
  1135. #define T598 Z598
  1136. #define T599 Z599
  1137. #define T600 Z600
  1138. #define T601 Z601
  1139. #define T602 Z602
  1140. #define T603 Z603
  1141. #define T604 Z604
  1142. #define T605 Z605
  1143. #define T606 Z606
  1144. #define T607 Z607
  1145. #define T608 Z608
  1146. #define T609 Z609
  1147. #define T610 Z610
  1148. #define T611 Z611
  1149. #define T612 Z612
  1150. #define T613 Z613
  1151. #define T614 Z614
  1152. #define T615 Z615
  1153. #define T616 Z616
  1154. #define T617 Z617
  1155. #define T618 Z618
  1156. #define T619 Z619
  1157. #define T620 Z620
  1158. #define T621 Z621
  1159. #define T622 Z622
  1160. #define T623 Z623
  1161. #define T624 Z624
  1162. #define T625 Z625
  1163. #define T626 Z626
  1164. #define T627 Z627
  1165. #define T628 Z628
  1166. #define T629 Z629
  1167. #define T630 Z630
  1168. #define T631 Z631
  1169. #define T632 Z632
  1170. #define T633 Z633
  1171. #define T634 Z634
  1172. #define T635 Z635
  1173. #define T636 Z636
  1174. #define T637 Z637
  1175. #define T638 Z638
  1176. #define T639 Z639
  1177. #define T640 Z640
  1178. #define T641 Z641
  1179. #define T642 Z642
  1180. #define T643 Z643
  1181. #define T644 Z644
  1182. #define T645 Z645
  1183. #define T646 Z646
  1184. #define T647 Z647
  1185. #define T648 Z648
  1186. #define T649 Z649
  1187. #define T650 Z650
  1188. #define T651 Z651
  1189. #define T652 Z652
  1190. #define T653 Z653
  1191. #define T654 Z654
  1192. #define T655 Z655
  1193. #define T656 Z656
  1194. #define T657 Z657
  1195. #define T658 Z658
  1196. #define T659 Z659
  1197. #define T660 Z660
  1198. #define T661 Z661
  1199. #define T662 Z662
  1200. #define T663 Z663
  1201. #define T664 Z664
  1202. #define T665 Z665
  1203. #define T666 Z666
  1204. #define T667 Z667
  1205. #define T668 Z668
  1206. #define T669 Z669
  1207. #define T670 Z670
  1208. #define T671 Z671
  1209. #define T672 Z672
  1210. #define T673 Z673
  1211. #define T674 Z674
  1212. #define T675 Z675
  1213. #define T676 Z676
  1214. #define T677 Z677
  1215. #define T678 Z678
  1216. #define T679 Z679
  1217. #define T680 Z680
  1218. #define T681 Z681
  1219. #define T682 Z682
  1220. #define T683 Z683
  1221. #define T684 Z684
  1222. #define T685 Z685
  1223. #define T686 Z686
  1224. #define T687 Z687
  1225. #define T688 Z688
  1226. #define T689 Z689
  1227. #define T690 Z690
  1228. #define T691 Z691
  1229. #define T692 Z692
  1230. #define T693 Z693
  1231. #define T694 Z694
  1232. #define T695 Z695
  1233. #define T696 Z696
  1234. #define T697 Z697
  1235. #define T698 Z698
  1236. #define T699 Z699
  1237. #define T700 Z700
  1238. #define T701 Z701
  1239. char object_to_char();
  1240. int object_to_int();
  1241. float object_to_float();
  1242. double object_to_double();
  1243. char *object_to_string();
  1244. int FIXtemp;
  1245. #define    CMPmake_fixnum(x) \
  1246. ((((FIXtemp=(x))+1024)&-2048)==0?small_fixnum(FIXtemp):make_fixnum(FIXtemp))
  1247. #define Creturn(v) return((vs_top=vs,(v)))
  1248. #define Cexit return((vs_top=vs,0))
  1249. double sin(), cos(), tan();
  1250. object read_byte1(),read_char1();
  1251.  
  1252. #define fs_leader(ar,i) (((object *)((ar)->fs.fs_self))[-(i+1)])
  1253. #define RPAREN )
  1254. object make_list();
  1255. #ifdef HAVE_ALLOCA
  1256. #ifndef alloca
  1257. char *alloca();
  1258. #endif
  1259. char *alloca_val;
  1260. #define ALLOCA_CONS(n) (alloca_val=alloca((n)*sizeof(struct cons))) 
  1261. #define ON_STACK_CONS(x,y) (alloca_val=alloca(sizeof(struct cons)), on_stack_cons(x,y)) 
  1262. #define ON_STACK_LIST on_stack_list
  1263. #define ON_STACK_LIST_VECTOR on_stack_list_vector
  1264. #define ON_STACK_MAKE_LIST on_stack_make_list
  1265. object on_stack_cons();
  1266. object on_stack_list();
  1267. object on_stack_list_vector();
  1268. object on_stack_make_list();
  1269. #else
  1270. #define ALLOCA_CONS(n) 0
  1271. #define ON_STACK_CONS(x,y) MMcons(x,y)
  1272. #define ON_STACK_LIST list
  1273. #define ON_STACK_LIST_VECTOR list_vector
  1274. #define ON_STACK_MAKE_LIST make_list
  1275. #endif
  1276.  
  1277.  
  1278. struct call_data { object fun;
  1279.            int argd;};
  1280. struct call_data fcall;
  1281. object  fcalln();
  1282. object list_vector();
  1283. object MVloc[10];
  1284. #define VARG(min,max) ((min) | (max << 8))
  1285. #define  VFUN_NARGS fcall.argd
  1286. extern object Cstd_key_defaults[];
  1287. int vfun_wrong_number_of_args();
  1288. int eql(),equal(),eq();
  1289. object sublis1();
  1290. object LVformat(),LVerror();
  1291. #define EQ(x,y) ((x)==(y))
  1292.  
  1293.  
  1294.  
  1295. /* #include "../h/genpari.h"*/
  1296. typedef  long *GEN;
  1297. GEN addii(),mulii(),mulsi(),powerii(),shifti(),stoi(),dvmdii(),subii();
  1298. int cmpii();
  1299. #define signe(x)          (((GEN)(x))[1]>>24)
  1300. #define lg(x)             (((GEN)(x))[0]&0xffff)
  1301. #define setlg(x,s)        (((GEN)(x))[0]=(((GEN)(x))[0]&0xffff0000)+s)
  1302. #define lgef(x)           (((GEN)(x))[1]&0xffff)
  1303. #define setlgef(x,s)      (((GEN)(x))[1]=(((GEN)(x))[1]&0xffff0000)+s)
  1304.  
  1305. int in_saved_avma ;
  1306. #define ulong unsigned long
  1307. /* #define DEBUG_AVMA */
  1308.  
  1309. #ifdef DEBUG_AVMA
  1310. #define save_avma long lvma = (in_saved_avma = 1, avma)
  1311. #define restore_avma avma = (in_saved_avma = 0, lvma)
  1312. #else
  1313. #define save_avma long lvma = avma
  1314. #define restore_avma avma = lvma
  1315. #endif
  1316. unsigned long avma;
  1317. GEN gzero;
  1318. GEN icopy_x;
  1319.  
  1320. object make_integer();
  1321.   /* copy x to y, increasing space by factor of 2  */
  1322.  
  1323.  
  1324. GEN otoi();
  1325. /*
  1326. object integ_temp;
  1327. #define otoi(x) (integ_temp = (x) , (type_of(integ_temp) == t_bignum \
  1328.    ? MP(integ_temp) :stoi(fix(integ_temp))))
  1329. */
  1330. #define ISETQ_FIX(a,b,c) isetq_fix(a,c)
  1331. void isetq_fix();
  1332. #ifdef HAVE_ALLOCA
  1333. #define SETQ_II(var,alloc,val) \
  1334.   do{GEN _xx =(val) ; \
  1335.   int _n = replace_copy1(_xx,var); \
  1336.   if(_n) var = replace_copy2(_xx,alloca(_n));}while(0)
  1337.  
  1338. #define SETQ_IO(var,alloc,val) {object _xx =(val) ; \
  1339.                   int _n = obj_replace_copy1(_xx,var); \
  1340.                 if(_n) var = obj_replace_copy2(_xx,alloca(_n));}
  1341. #define IDECL(a,b,c) ulong b[4];a =(b[0]=0x1010000 +4,b) ; object c
  1342. #else
  1343. GEN setq_io(),setq_ii();
  1344. #define SETQ_IO(x,alloc,val)   (x)=setq_io(x,&alloc,val)
  1345. #define SETQ_II(x,alloc,val)   (x)=setq_ii(x,&alloc,val)
  1346. #define IDECL(a,b,c) ulong b[4];a =(b[0]=0x1010000 +4,b);object c
  1347. #endif
  1348.  
  1349. object cmod(), cplus(), cdifference(), ctimes();
  1350.  
  1351. #ifdef __GNUC__
  1352. #define alloca __builtin_alloca
  1353. #endif
  1354.  
  1355.  
  1356.